home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / wil4c10.zip / READINI.C < prev    next >
C/C++ Source or Header  |  1997-07-26  |  2KB  |  84 lines

  1. /* READINI.C */
  2.  
  3. #include <windows.h>
  4. #include "paint.h"
  5. #include "readini.h"
  6. #include "str.h"
  7.  
  8. static int Handle = -1;  /* file handle */
  9.  
  10. /* read next char from *.INI file */
  11.  
  12. static int ReadNextChar(int Handle)
  13. {int  Code;
  14.  static char TheChar;
  15.  Code = _lread(Handle, (LPSTR) &TheChar, 1);
  16.  if(Code<=0) return -1;
  17.  /* skip CRs */
  18.  if(TheChar=='\r')
  19.    {Code = _lread(Handle, (LPSTR) &TheChar, 1);
  20.     if(Code<=0) return -1;
  21.    }
  22.  /* return EOL in lieu of LF */
  23.  if(TheChar=='\n') return '\0';
  24.  return (int) TheChar;
  25. }
  26.  
  27. /* extract sub-string */
  28.  
  29. int IniExtract(LPSTR StringPtr, LPSTR KeyWordPtr, LPSTR ValuePtr)
  30. {if(StringPtr[4] != '=') return FALSE;
  31.  StringPtr[4] = '\0';
  32. #if 0
  33.      {char Temp[80];
  34.       wsprintf((LPSTR)Temp,"<%s|%s>",StringPtr,KeyWordPtr);
  35.       DisplayLine((LPSTR)Temp);
  36.      }
  37. #endif
  38.  if(lstrcmpi(StringPtr,KeyWordPtr)==0)
  39.    {lstrcpy((LPSTR)ValuePtr,(LPSTR) &StringPtr[5]);
  40. #if 0
  41.       {char Temp[80];
  42.        wsprintf((LPSTR)Temp,"<%s>",ValuePtr);
  43.        DisplayLine((LPSTR)Temp);
  44.       }
  45. #endif
  46.     return TRUE;
  47.    }
  48.  StringPtr[4] = '=';
  49.  return FALSE;
  50. }
  51.  
  52. /* open *.INI file */
  53.  
  54. int IniOpen(LPSTR Filename)
  55. {/* read FROM.INI file */
  56.  Handle = _lopen(Filename, OF_READ|OF_SHARE_DENY_WRITE);
  57.  if(Handle<0)
  58.    {DisplayString("Cannot open ");
  59.     DisplayLine((LPSTR) Filename);
  60.     return FALSE;
  61.    }
  62.  return TRUE;
  63. }
  64.  
  65. /* read next line from *.INI file */
  66.  
  67. int IniRead(LPSTR Buffer)
  68. {int Code;
  69.  int Count = 0;
  70.  if(Handle==-1) return -1;
  71.  /* extract each field */
  72.  while(1)
  73.    {Code = ReadNextChar(Handle);
  74.     if(Code<0)
  75.       {_lclose(Handle);
  76.        Handle = -1;
  77.        return -1;
  78.       }
  79.     /* add char to buffer */
  80.     Buffer[Count++] = (char) Code;
  81.     if((char)Code=='\0') return Count;
  82.    }
  83. }
  84.